package com.game.majiang.vo;

import java.sql.Types;
import java.util.Random;

import com.game.majiang.config.DataManager;
import com.game.majiang.logic.LogicClient;
import com.game.majiang.logic.LogicServer;
import com.game.server.db.Parameter;
import com.game.server.db.ParameterType;
import com.game.server.db.SqlHelper;
import com.game.server.db.SqlHelperwrite;

public class RobotVo {


	//登陆机器人
	public static LogicClient loginRobot(){
		int allcount = checkRobotCount();
		//		allcount = (int)allcount;
		LogicClient client = null;
		int suiji = 0;
		int i=0;
		boolean logicbool = false;
		if(allcount>0){
			do {
				Random  ra = new Random();
				suiji = ra.nextInt(allcount)+1;
				//				boolean bool = false;
				LogicClient robot = (LogicClient) LogicServer.getInstance().getClient(suiji);
				//				for (AbstractClient abclient : LogicServer.getInstance().getClients()) {
				//					if(abclient.getUserId()==suiji){
				//						bool = true;
				//						break;
				//					}
				//				}
				if(robot==null){
					logicbool = true;

//					if(logicbool){
//						//						suiji = 202;
//						if(suiji>0&&suiji<allcount+1){
//							int uid=CheckPassword(suiji);
//							if(uid>0){
//								client = new LogicClient(suiji, new RobotVo());
//								if(client.getUserId()<10000&&client.getVo().getGold()<10000){
//									client.getVo().AddGold(50000);
//								}
//							}else{
//								continue;
//							}
//
//						}
//
//					}

					break;
				}else{
					if(robot.getTable()==null&&robot.getRoom()==null){
						robot.Close();
					}
				}
				i++;
			} while (i!=allcount);
		}


		return client;
	}



	//查询机器人表数量
	public static int checkRobotCount(){
		String cmdText = "select count(id) AS c from robot ";
		//		CachedRowSet rs = SqlHelper.getResultSet(cmdText, p1);
		Object obj =SqlHelper.execScalar(cmdText);
		Long  l = (Long)obj;
		return l.intValue();

	}
	
	static public int CheckPassword(int rid)
	{
		String cmdText = "select id from robot where id=?  and status <> 0";
		Parameter p1 = new Parameter(Types.INTEGER, rid, ParameterType.Input);

		Object obj = SqlHelper.execScalar(cmdText, p1);
		if(obj == null)
			return -1;
		else
			return (Integer)obj;
	}
	static public int CheckPassword2(String rid)
	{
		String cmdText = "select id from robot where Account=?  and status <> 0";
		Parameter p1 = new Parameter(Types.VARCHAR, rid, ParameterType.Input);

		Object obj = SqlHelperwrite.execScalar(cmdText, p1);
		if(obj == null)
			return -1;
		else
			return (Integer)obj;
	}
	public static int AddUser(String account,String password,String nickname,String head,String phone,long gold, byte type,String owncode,int card) {
		String cmdText = "insert into robot(Account,Password,Nickname,head,gold,type,createtime)values(?,?,?,?,?,?,now())";
		Parameter p1 = new Parameter(Types.NVARCHAR, account, ParameterType.Input);
		Parameter p2 = new Parameter(Types.NVARCHAR, password, ParameterType.Input);
		Parameter p3 = new Parameter(Types.NVARCHAR, nickname, ParameterType.Input);
		Parameter p4 = new Parameter(Types.NVARCHAR, head, ParameterType.Input);
		Parameter p6 = new Parameter(Types.BIGINT, gold, ParameterType.Input);
		Parameter p7 = new Parameter(Types.TINYINT, type, ParameterType.Input);

		int  i = SqlHelperwrite.execute(cmdText,p1,p2,p3,p4,p6,p7);
		if(i > 0 )
		{
			return CheckPassword2(account);
		}
		else
		{
			return i;
		}
	}
	public static int getMaxId()
	{
		String cmdText = "select max(id) from robot";
		Object obj = SqlHelper.execScalar(cmdText);
		if(obj == null)
			return 0;
		return (Integer)obj;
	}
	//添加机器人 测试用
	public static void insertRobot(String acc){

		String account = acc;
		String password ="";
		//LoginRsp rsp = new LoginRsp();
		int uid = CheckPassword2(account);
		if(uid == -1)
		{
			String inglod = DataManager.getInstance().systemValue("initGold");
			//        	int card =Integer.parseInt(DataManager.getInstance().systemValue("initCard"));
			int card =10000;
			int gold =Integer.parseInt(inglod);
			String nickname = "机器人"+ (getMaxId()+1);
			AddUser(account, password,nickname,"http://img.cgoke.com/headImage/1.jpg",null, gold,(byte)1,"",card);
		}
	}

	// 虚拟房间机器人进入房间
	public static synchronized boolean  robotintoRoomxuni(LogicClient robot,int roomid,int tableid){
		//		LogicTable  t1 = null;
		//		LogicRoom   r1 = null;
		boolean inbool = false;
		//		for (AbstractRoom room :LogicServer.getInstance().getRooms()) {
		//			if(room.gettype()==roomid){
		//				for (AbstractTable table : room.getTables()) {
		//					if(table.getID()==tableid){
		//
		//						if(table.GetPlayerCount()>=6){
		//
		//
		//							break;
		//
		//						}
		//						else 
		//						{
		//							if(table.getGamechang()==3){
		//								t1=(LogicTable) table;
		//								if(!t1.ifxujia) {
		//									if(robot.getVo().getDiamonds()<t1.getRuchangtable()){
		//										t1=null;
		//										break;
		//									}
		//								else
		//								{
		//									if(roomid==3){
		//										if(table.GetPlayerCount()<6){
		//											t1=(LogicTable) table;
		//											break;
		//										}
		//									}
		//									else if(roomid==1)
		//									{
		//										if(table.GetPlayerCount()<4){
		//											t1=(LogicTable) table;
		//											break;
		//										}
		//									}
		//									else
		//									{
		//										if(table.GetPlayerCount()<5){
		//											t1=(LogicTable) table;
		//											break;
		//										}
		//									}
		//								}
		//							}else {
		//
		//								if(robot.getVo().getGold()<t1.getRuchangtable()){
		//									t1=null;
		//									break;
		//								}
		//							else
		//							{
		//								if(roomid==3){
		//									if(table.GetPlayerCount()<6){
		//										t1=(LogicTable) table;
		//										break;
		//									}
		//								}
		//								else if(roomid==1)
		//								{
		//									if(table.GetPlayerCount()<4){
		//										t1=(LogicTable) table;
		//										break;
		//									}
		//								}
		//								else
		//								{
		//									if(table.GetPlayerCount()<5){
		//										t1=(LogicTable) table;
		//										break;
		//									}
		//								}
		//							}
		//						
		//							}
		//							}
		//							else 
		//							{
		//								if(roomid==3){
		//									if(table.GetPlayerCount()<6){
		//										t1=(LogicTable) table;
		//										break;
		//									}
		//								}
		//								else if(roomid==1)
		//								{
		//									if(table.GetPlayerCount()<4){
		//										t1=(LogicTable) table;
		//										break;
		//									}
		//								}
		//								else
		//								{
		//									if(table.GetPlayerCount()<5){
		//										t1=(LogicTable) table;
		//										break;
		//									}
		//								}
		//							}
		//						}
		//					}
		//
		//				}
		//				r1 = (LogicRoom) room;
		//				break;
		//			}
		//		}
		//		if(t1!=null){
		//			 if(roomid==3){
		//
		//				chexuanroom room = (chexuanroom)r1;
		//				chexuantable table = (chexuantable)t1;
		//				chexuanplayer player = new chexuanplayer(robot);
		//				table.addPlayer(player);
		//
		//				player.setSeatNo(table.setSeat(robot));
		//				player.initializationPlayer();
		//				robot.setTableid(table.getID());
		//				robot.setRoomid(room.getID());
		//				//				table.CheXuanBroadRoomInfo(robot);
		//				table.CheXuanBroadPlayerInfo(player);
		//				room.addPlayer(player);
		//				
		//				
		//				inbool = true;
		//			}
		//			else
		//			{
		//				LogManager.getInstance().Log("没有房间  1  机器人进房间：tableid:"+t1.getID()+"   id:"+robot.getUserId());
		//				robot.Close();
		//			}
		//			LogManager.getInstance().Log("机器人进房间：tableid:"+t1.getID()+"   id:"+robot.getUserId());
		//		}else{
		//			LogManager.getInstance().Log("没有房间 2   机器人进房间：tableid:null"+"   id:"+robot.getUserId());
		//			robot.Close();
		//		}
		return inbool;
	}
}
